Das letzte Update in dieser Kategorie ist schon länger her, daher mal ein aktueller Stand zu diesem Projekt. Es wird auch sehr aktiv von mir gepflegt und immer wieder optimiert und umgestellt.
Nachdem die Suche bzw. das Crawlen lange im Fokus der Entwicklung war und weitgehend optimiert wurde, stieß eines Tages die Datenhaltung an Ihre Grenzen. Bei 100 Millionen Hostnamen war ein Limit erreicht, an dem die MySQL-Instanz auf meinem Server nicht mehr in zufriedenstellender Zeit die Anfragen bewältigen konnte. Eine neue Lösung musste her und so testete ich Solr/Lucene als Datenbank. Ab der Version 4 kann ein Suchindex wie eine Datenbank verwendet werden, da seit dem auch inkrementelle Updates zu einem Dokument möglich sind. Diese sind eine Grundvoraussetzung für das Vorhaben.
Die Umstellung auf Lucene verlief weit besser als gedacht. Mit einer deutlich geringeren CPU Belastung konnte der gleiche Index bewerkstelligt werden. Leider schlichen sich durch kleine Fehler bei der Datenmigration von MySQL auf Lucene immer mehr Inkonsistenzen in den Index und dieser musste leider zurückgesetzt werden. Nachdem die Datenhaltung nun aber für einen längeren Zeitraum sichergestellt war, wurde erneut am Crawler optimiert. Dieser wurde auf Arbeitspakete umgestellt. statt wie bisher die Arbeit direkt aus dem Datenbestand zu lesen. Benötigt wurde nun ein Job, der die Arbeitspakete erstellt und ein weiterer, der die fertigen Pakete in die Datenbank migriert.
Durch die Umstellung auf Datenpakete hat sich die Last auf dem Server erneut stark verringert, obwohl die Zahl der abgearbeiteten Domains sich mehr als verdoppelt haben.